﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_Department : System.Web.UI.Page
{
	#region 属性
	private int nColumnID;
	private string strColumn;
	private ColumnComponent clsColumnComp = new ColumnComponent();
	private DepartmentComponent clsDepartmentComp = new DepartmentComponent();
	#endregion

	protected void Page_Load(object sender, EventArgs e)
	{
		nColumnID = Convert.ToInt32(Request.QueryString["id"]);
		strColumn = clsColumnComp.GetOneByID(nColumnID).Name;

		BtnToQuery.Click += new EventHandler(BtnToQuery_Click);
		BtnToView.Click += new EventHandler(BtnToView_Click);
		BtnOperation.Click += new EventHandler(BtnOperation_Click);
		BtnFirst.Click += new EventHandler(BtnFirst_Click);
		BtnNext.Click += new EventHandler(BtnNext_Click);
		BtnPrev.Click += new EventHandler(BtnPrev_Click);
		BtnLast.Click += new EventHandler(BtnLast_Click);
		BtnQueryAll.Click += new EventHandler(BtnQueryAll_Click);
		BtnMultiSelect.Click += new EventHandler(BtnMultiSelect_Click);
		BtnMultiDelete.Click += new EventHandler(BtnMultiDelete_Click);
		GrvDepartments.DataBound += new EventHandler(GrvDepartments_DataBound);
		GrvDepartments.RowEditing += new GridViewEditEventHandler(GrvDepartments_RowEditing);
		GrvDepartments.RowDeleting += new GridViewDeleteEventHandler(GrvDepartments_RowDeleting);

		if (!IsPostBack)
		{
			ViewState["Status"] = "";
			ViewToQueryResult();
			BindDepartmentsGridView(GrvDepartments);
		}

	}

	
	#region 按钮事件

	#region 转到查询条件视图
	/// <summary>
	/// 转到查询视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	转到查询视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-26 18:19:34
	 * *******************************************************************/
	void BtnToQuery_Click(object sender, EventArgs e)
	{
		ViewToQuery();
	}
	#endregion
	
	#region 视图控制按钮，到添加视图，返回到查询结果视图
	/// <summary>
	/// 视图控制按钮，到添加视图，返回到查询结果视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	视图控制按钮，到添加视图，返回到查询结果视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-26 18:23:14
	 * *******************************************************************/
	void BtnToView_Click(object sender, EventArgs e)
	{
		if (BtnToView.CommandName == "ToQueryResult")
		{
			ViewToQueryResult();
		}
		else
		{
			if (BtnToView.CommandName == "ToAdd")
			{
				ViewToAdd();
			}
		}
	}
	#endregion

	#region 添加、修改、查询按钮操作
	/// <summary>
	/// 添加、修改、查询按钮操作
	/// </summary>
	/*******************************************************************
	 * * 功    能：	添加、修改、查询按钮操作
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 14:51:40
	 * *******************************************************************/
	void BtnOperation_Click(object sender, EventArgs e)
	{
		string strDepartment;
		int nFatherDepartmentID;
		int nUpdateDepartmentID;
		Department clsDepartment = new Department();

		strDepartment = TxtName.Text.Trim();
		nFatherDepartmentID = Convert.ToInt32(DdlFatherDepartments.Text);

		if (BtnOperation.CommandName == "Query")
		{
			ViewState["Status"] = "Query";
			ViewState["QueryName"] = TxtName.Text.Trim();
			ViewState["QueryFather"] = DdlFatherDepartments.Text.Trim();

			ViewToQueryResult();
			BindDepartmentsGridView(GrvDepartments);
		}
		else
		{
			if (BtnOperation.CommandName == "Add")
			{
				clsDepartment.Name = strDepartment;
				clsDepartment.FatherID = nFatherDepartmentID;
				clsDepartmentComp.Add(clsDepartment);
				ViewToQueryResult();
				BindDepartmentsGridView(GrvDepartments);
			}
			else
			{
				if (BtnOperation.CommandName == "Update")
				{
					nUpdateDepartmentID = Convert.ToInt32(ViewState["nModifyID"]);
					clsDepartment = clsDepartmentComp.GetOne(nUpdateDepartmentID);
					clsDepartment.Name = strDepartment;
					clsDepartment.FatherID = nFatherDepartmentID;
					clsDepartmentComp.Modify(clsDepartment);
					ViewToQueryResult();
					BindDepartmentsGridView(GrvDepartments);
				}
			}
		}
	}
	#endregion

	#region “查询全部”按钮事件
	/// <summary>
	/// “查询全部”按钮事件
	/// </summary>
	/*******************************************************************
	 * * 功    能：	“查询全部”按钮事件
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-28 9:42:23
	 * *******************************************************************/
	void BtnQueryAll_Click(object sender, EventArgs e)
	{
		ViewState["Status"] = "QueryAll";
		BindDepartmentsGridView(GrvDepartments);
	}
	#endregion

	#region “全选反选”按钮
	/// <summary>
	/// “全选反选”按钮
	/// </summary>
	/*******************************************************************
	 * * 功    能：	“全选反选”按钮
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-28 9:47:31
	 * *******************************************************************/
	void BtnMultiSelect_Click(object sender, EventArgs e)
	{
		for (int i = 0; i < GrvDepartments.Rows.Count; i++)
		{
			CheckBox Chk = ( CheckBox ) GrvDepartments.Rows[i].FindControl("CheckBoxMultiSelect");
			if (Chk.Checked == true)
			{
				Chk.Checked = false;
			}
			else
			{
				Chk.Checked = true;
			}
		}
	}
	#endregion

	#region “删除所选”按钮，删除多个单位
	/// <summary>
	/// “删除所选”按钮，删除多个单位
	/// </summary>
	/*******************************************************************
	 * * 功    能：	“删除所选”按钮，删除多个单位
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-28 9:51:13
	 * *******************************************************************/
	void BtnMultiDelete_Click(object sender, EventArgs e)
	{
		GridView dv;
		Department clsDeleteDepartment = new Department();

		dv = GrvDepartments;

		for (int i = 0; i < dv.Rows.Count; i++)
		{
			CheckBox Chk = ( CheckBox ) dv.Rows[i].FindControl("CheckBoxMultiSelect");
			if (Chk.Checked == true)
			{
				clsDeleteDepartment = clsDepartmentComp.GetOne(Convert.ToInt32(dv.DataKeys[i].Value));
				clsDepartmentComp.Delete(clsDeleteDepartment);
			}
		}
		BindDepartmentsGridView(GrvDepartments);
	}
	#endregion

	#endregion

	#region 视图转换

	#region 转到显示查询结果视图
	/// <summary>
	/// 转到显示查询结果视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	转到显示查询结果视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-26 17:08:44
	 * *******************************************************************/
	private void ViewToQueryResult()
	{
		MultiViewViews.SetActiveView(ViewResult);

		LabOperation.Text = strColumn;
		BtnToView.Text = "添加";
		BtnToView.CommandName = "ToAdd";
	}
	#endregion

	#region 转到查询条件视图
	/// <summary>
	/// 转到查询条件视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	转到查询条件视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-26 18:15:35
	 * *******************************************************************/
	private void ViewToQuery()
	{
		MultiViewViews.SetActiveView(ViewOperation);

		LabOperation.Text = "查询";
		BtnToView.Text = "返回";
		BtnToView.CommandName = "ToQueryResult";
		BindFatherDepartmentDropDownList(DdlFatherDepartments);
		BtnOperation.Text = "查询";
		BtnOperation.CommandName = "Query";
	}
	#endregion

	#region 转到添加视图
	/// <summary>
	/// 转到添加视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	转到添加视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 17:43:26
	 * *******************************************************************/
	private void ViewToAdd()
	{
		MultiViewViews.SetActiveView(ViewOperation);
		LabOperation.Text = "添加单位";
		BtnToView.Text = "返回";
		BtnToView.CommandName = "ToQueryResult";
		BindFatherDepartmentDropDownList(DdlFatherDepartments);
		BtnOperation.Text = "添加";
		BtnOperation.CommandName = "Add";
	}
	#endregion

	#region 转到修改视图
	/// <summary>
	/// 转到修改视图
	/// </summary>
	/*******************************************************************
	 * * 功    能：	转到修改视图
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-28 10:08:01
	 * *******************************************************************/
	private void ViewToEdit()
	{
		Department clsEditDepartment = new Department();
		int nEditDepartmentID;

		MultiViewViews.SetActiveView(ViewOperation);
		LabOperation.Text = "修改单位";
		BtnToView.Text = "返回";
		BtnToView.CommandName = "ToQueryResult";
		BindFatherDepartmentDropDownList(DdlFatherDepartments);
		BtnOperation.Text = "修改";
		BtnOperation.CommandName = "Update";

		nEditDepartmentID = Convert.ToInt32(ViewState["nModifyID"]);
		clsEditDepartment = clsDepartmentComp.GetOne(nEditDepartmentID);
		TxtName.Text = clsEditDepartment.Name;
		DdlFatherDepartments.Text = clsEditDepartment.FatherID.ToString();
	}
	#endregion

	#endregion

	#region 控件绑定

	#region 为下来列表绑定上级单位数据
	/// <summary>
	/// 为下来列表绑定上级单位数据
	/// </summary>
	/*******************************************************************
	 * * 功    能：	为下来列表绑定上级单位数据
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 8:28:20
	 * *******************************************************************/
	private void BindFatherDepartmentDropDownList(DropDownList ddl)
	{
		ddl.DataSource = clsDepartmentComp.QueryAllWithNoFather("无");
		ddl.DataTextField = "Name";
		ddl.DataValueField = "ID";
		ddl.DataBind();
	}
	#endregion

	#region 把单位查询的结果绑定到GridView控件
	/// <summary>
	/// 把单位查询的结果绑定到GridView控件
	/// </summary>
	/*******************************************************************
	 * * 功    能：	把单位查询的结果绑定到GridView控件
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 15:00:38
	 * *******************************************************************/
	private void BindDepartmentsGridView(GridView dv)
	{
		string strQueryName;
		int nQueryFatherID;

		if (ViewState["Status"].ToString() == "Query")
		{
			strQueryName = ViewState["QueryName"].ToString();
			nQueryFatherID = Convert.ToInt32(ViewState["QueryFather"]);
			dv.DataSource = clsDepartmentComp.QueryDepartments(strQueryName, nQueryFatherID);
		}
		else
		{
			dv.DataSource = clsDepartmentComp.QueryAll();
		}
		dv.DataKeyNames = new string[] { "ID" };
		dv.DataBind();
	}
	#endregion

	#endregion

	#region GridView控件事件
	void GrvDepartments_DataBound(object sender, EventArgs e)
	{
		GridView dv;

		dv = ( GridView ) sender;
		if (dv.PageCount != 0)
		{
			LabNowPage.Text = (dv.PageIndex + 1).ToString();
		}
		else
		{
			LabNowPage.Text = "0";
		}
		LabTotalPage.Text = dv.PageCount.ToString();

		if (dv.PageIndex == 0)
		{
			BtnFirst.Enabled = false;
			BtnPrev.Enabled = false;
		}
		else
		{
			BtnFirst.Enabled = true;
			BtnPrev.Enabled = true;
		}

		if (dv.PageIndex == dv.PageCount - 1)
		{
			BtnNext.Enabled = false;
			BtnLast.Enabled = false;
		}
		else
		{
			BtnNext.Enabled = true;
			BtnLast.Enabled = true;
		}
	}
	void GrvDepartments_RowEditing(object sender, GridViewEditEventArgs e)
	{
		ViewState["nModifyID"] = GrvDepartments.DataKeys[e.NewEditIndex].Value;
		ViewToEdit();
	}

	void GrvDepartments_RowDeleting(object sender, GridViewDeleteEventArgs e)
	{
		int nDeleteID;		// 要删除的单位ID
		Department clsDeleteDepartment = new Department();

		nDeleteID = Convert.ToInt32(GrvDepartments.DataKeys[e.RowIndex].Value);
		clsDeleteDepartment.ID = nDeleteID;
		clsDepartmentComp.Delete(clsDeleteDepartment);
		BindDepartmentsGridView(GrvDepartments);
	}

	#endregion

	#region 翻页导航
	#region 到第一页
	/// <summary>
	/// 到第一页
	/// </summary>
	/*******************************************************************
	 * * 功    能：	到第一页
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 18:19:48
	 * *******************************************************************/
	void BtnFirst_Click(object sender, EventArgs e)
	{
		GrvDepartments.PageIndex = 0;
		BindDepartmentsGridView(GrvDepartments);
	}
	#endregion

	#region 到下一页
	/// <summary>
	/// 到下一页
	/// </summary>
	/*******************************************************************
	 * * 功    能：	到下一页
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 18:22:40
	 * *******************************************************************/
	void BtnNext_Click(object sender, EventArgs e)
	{
		if (GrvDepartments.PageIndex < GrvDepartments.PageSize)
		{
			GrvDepartments.PageIndex = GrvDepartments.PageIndex + 1;
			BindDepartmentsGridView(GrvDepartments);
		}
	}
	#endregion

	#region 到上一页
	/// <summary>
	/// 到上一页
	/// </summary>
	/*******************************************************************
	 * * 功    能：	到上一页
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 18:24:56
	 * *******************************************************************/
	void BtnPrev_Click(object sender, EventArgs e)
	{
		if (GrvDepartments.PageIndex > 0)
		{
			GrvDepartments.PageIndex = GrvDepartments.PageIndex - 1;
			BindDepartmentsGridView(GrvDepartments);
		}
	}
	#endregion

	#region 到最后一页
	/// <summary>
	/// 到最后一页
	/// </summary>
	/*******************************************************************
	 * * 功    能：	到最后一页
	 * * 参    数：
	 * * 返 回 值：
	 * * 作    者： Tony Mucor
	 * * 创建日期： 2013-8-27 18:26:46
	 * *******************************************************************/
	void BtnLast_Click(object sender, EventArgs e)
	{
		GrvDepartments.PageIndex = GrvDepartments.PageCount - 1;
		BindDepartmentsGridView(GrvDepartments);
	}
	#endregion
	#endregion
}